﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DynamicAuditor.DTOs;
using DynamicAuditor.WsMantenimientos;

namespace DynamicAuditor
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        /// <summary>
        /// Declaracion de variables publicas para utilizar en esta pagina.
        /// </summary>
        WsSeguridad.dtoUsuario usuario = new WsSeguridad.dtoUsuario();
        WsSeguridad.dtoUsuario usrconectado = new WsSeguridad.dtoUsuario();
        WsSeguridad.WsSeguridad seguridad = new WsSeguridad.WsSeguridad();


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Convert.ToBoolean(Session["CrearUsuario"]) == true)
                {
                    Cargar_Clientes();
                }
                else
                {
                    Buscar_Usuario();
                }


                
                
                
            }
        }

        /// <summary>
        /// Metodo que carga clientes en el dropdown list de clientes
        /// </summary>
        private void Cargar_Clientes()
        {

            WsMantenimientos.WsMantenimientos mantcliente = new DynamicAuditor.WsMantenimientos.WsMantenimientos();
            DynamicAuditor.WsMantenimientos.dtoCliente[] clientes =  mantcliente.ObtenerListaClientesActivos();
            ddlCliente.DataSource = clientes;
                for (int i = 0; i <= clientes.Length - 1; i++)
                {
                    ddlCliente.DataTextField = "Nombre";
                    ddlCliente.DataValueField = "idCliente";

                }
                ddlCliente.DataBind();          
        }

        private void Buscar_Usuario()
        {
            int _idusuario = Convert.ToInt16(Session["idUsuario"]);
            DynamicAuditor.WsSeguridad.dtoUsuario usuario = new DynamicAuditor.WsSeguridad.dtoUsuario();
            DynamicAuditor.WsSeguridad.WsSeguridad seguridad = new DynamicAuditor.WsSeguridad.WsSeguridad();
            usuario = seguridad.ObtenerUsuarioxId(_idusuario);

            if (Convert.ToBoolean(usuario.Activo) == true)
            {
                chkUsrActivo.Checked = true;
            }
            else
            {
                chkUsrActivo.Checked = false;
            }
            mskCedula.Text = usuario.Cedula;
            txtemail.Text = usuario.Email;
            Cargar_Clientes();
            ddlCliente.SelectedIndex = usuario.idCliente;
            txtNombre.Text = usuario.Nombre;
            txtpassword.Text = usuario.Password;
            txtconfirmpassword.Text = usuario.Password;
            txtusuario.Text = usuario.Usuario;
           // usuario.CreadoPor = usrconectado.idUsuario;
         
           
        
           
        }


        /// <summary>
        /// Metodo para volver a la lista de usuarios
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>


        protected void Cancel(object sender, EventArgs e)
        {
            Response.Redirect("MantUsuario.aspx");
            


        
        }



        /// <summary>
        /// Metodo para la creacion de usuarios.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Salvar(object sender, EventArgs e)
        {
            int resp = 0;
            usrconectado = (DynamicAuditor.WsSeguridad.dtoUsuario)Session["Usuario"];
            usuario.Activo = chkUsrActivo.Checked;
            usuario.Cedula = mskCedula.Text;
            if (usrconectado == null)
            {
                usuario.CreadoPor = 0;
            }
            else
            {
                usuario.CreadoPor = usrconectado.idUsuario;
            }
            
            usuario.Email = txtemail.Text;
            usuario.Empresa = txtempresa.Text;
            usuario.idCliente = Convert.ToInt16(ddlCliente.SelectedValue);
            usuario.FechaCreacion = DateTime.Now;
            usuario.Nombre = txtNombre.Text;
            usuario.Password = txtpassword.Text;
            usuario.Usuario = txtusuario.Text;

            try
            {
                if (Convert.ToBoolean(Session["CrearUsuario"]) == true)
                {

                    resp = seguridad.CrearUsuario(usuario);
                    WebMsgBox.Show("El usuario fue creado correctamente.");
                }
                else
                {
                    resp = seguridad.ActualizarUsuario(usuario);
                    WebMsgBox.Show("La informacion fue actualizada satisfactoriamente.");
                }
            }
            catch (Exception ex)
            {
                WebMsgBox.Show("Ocurrio un error al actualizar la informacion del usuario." + ex.Message);
            }
            
        }
    }
}
